There are currently a number of collaborative, productivity and creative tools available to computer operators that are designed to improve user efficiency and enhance the overall user experience. For example, today's software developer has many integrated development environment (IDE) tools from which to choose. Some are commercially available for money and are closed source (MSFT VisualStudio) and some are free and are open source (Eclipse, NetBeans, etc). Some are graphical (color coded syntax, collapse/expand, visual break points and stack pointers). Some allow for integrated build and test. They are available for many programming languages such as C#, C, C++, JAVA (computer programming language), Python, etc. Some allow for simple jumps to declarations or references of objects or symbols (mouse over, tabbed windows, etc). Some have access to help or documentation that describe various system modules and libraries and their APIs, parameters, return code, and exceptions. Some have the ability to automatically generate some code under certain conditions (constructors, accessor methods, gets/sets, exception handlers, return values, error codes, etc). Some allow for work queues or to do lists so that the programmer can come back to certain files to finish skeletons, stubs, or other placeholder members or methods.
Almost all these tools have some form of auto-complete where the tool is constantly checking for valid syntax and for objects that are in scope and can be resolved and what members are available from those objects, or even local scope if the language is not an object oriented language. In addition, many IDEs have access to local or online sample code that can be used as a reference or which can be used to jumpstart a certain procedure or method. The Internet is full of code samples that can be used as patterns for new code that need to be written to perform certain functions (read a buffered file, issue a REST request, handle exceptions, spawn new threads from a thread pool, etc). However, under current auto-complete schemes access to these sample code snippets or files is manual and must be explicitly initiated by the programmer.
There are no tools currently available that can automatically sense and detect the kind of code that is being written and automatically suggest possible sample code that can be used in place of the code that is about to be written. A need exists for a computer program and method that effectively automates the auto-complete process thereby creating a way to program that has never before existed. Such an approach could effectively improve the code overall while also resulting in more and better code reuse while programming.